
// webSocket 的对象
let socketTask = null;
 
// 定义一个mixin对象
const webSocketMixin = {
	data(){
		return {
			title : 'Socket链接'
		}
	},
	/** 销毁之前 */
	beforeDestroy() {
		this.handleCloseWebSocket();
	},
    methods: {
       /**
		* 创建一个 WebSocket 连接
		* @param {number|string} id 连接的对象id
		*/
		handleConnectWebSocket(id) {
			return new Promise(resolve => {
				let url = 'wss://api.ztougj.cc/wss';
				// let url = 'wss://api.icode2023.top/wss';
				// 连接 WebSocket
				socketTask = uni.connectSocket({ url: url + id, complete: ()=> {} });
				// 监听 WebSocket 的打开事件
				socketTask.onOpen(() => {
					// 通过返回的socketTask的onMessage事件 - 监听 WebSocket 接受到服务器的消息事件
					resolve(socketTask);
				});
			});
		},
		
		/**
		 * 关闭 WebSocket 连接
		 */
		handleCloseWebSocket() {
			if(socketTask) {
				socketTask.close();
				socketTask = null;
			}
		},
		
		/**
		 * 处理 WebSocket 发送消息
		 * @param {string|object} message 发送的消息内容
		 */
		handleSendSocketMessage(message) {
			return new Promise(resolve => {
				let data = message;
				// 判断message的类型
				if(typeof message === 'object') {
					data = JSON.stringify(data);
				}
				socketTask.send({ data, success: () => resolve() });
			});
		},
    }
}
export default webSocketMixin;